class Solution
{
public:
  // 条件1: 子串中【不同字母】长度 <= maxLetters
  // 条件2: minSize <= 子串的总长度 <= maxSize
  int maxFreq(string s, int maxLetters, int minSize, int maxSize)
  {
    int n = s.size();

    unordered_map<string, int> occ; // 记录 重复子串 出现的【总次数】
    int ans = 0; // 最大次数

    for (int i = 0; i < n - minSize + 1; ++i) // 控制 子串【最大】长度 maxSize
    {
      // 取出 i 位置开始的【子串】
      string cur = s.substr(i, minSize);

      // 让【子串】所有字符，构造从 Set【去重】
      unordered_set<char> exist(cur.begin(), cur.end());

      // 如果【去重】后的【子串】长度 <= 最大的【不同字母】长度 maxLetters 则符合要求
      if (exist.size() <= maxLetters)
      {
        string cur = s.substr(i, minSize); // 取出 i 位置开始的【原始】子串
        ++occ[cur]; // 使用 map 累计【原始】子串的【重复次数】
        ans = max(ans, occ[cur]); // 更新【最大】重复子串次数
      }
    }

    return ans;
  }
};

// 作者：LeetCode-Solution
// 链接：https://leetcode-cn.com/problems/maximum-number-of-occurrences-of-a-substring/solution/zi-chuan-de-zui-da-chu-xian-ci-shu-by-leetcode-sol/
// 来源：力扣（LeetCode）
// 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。